{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "f51bdd67",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:26:17.698587Z",
     "start_time": "2023-05-05T16:26:15.404820Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'cuda'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import torch\n",
    "from torch import nn\n",
    "import torch.nn.functional as F\n",
    "import transformers\n",
    "from transformers import AutoTokenizer, AutoConfig, AutoModel\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib as mpl\n",
    "from IPython.display import Image\n",
    "# default: 100\n",
    "mpl.rcParams['figure.dpi'] = 150\n",
    "device = 'cuda' if torch.cuda.is_available() else 'cpu'\n",
    "device"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3a78b232",
   "metadata": {},
   "source": [
    "## summary"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "241681bc",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-04T14:44:55.929652Z",
     "start_time": "2023-05-04T14:44:55.924745Z"
    }
   },
   "source": [
    "- converting the model’s(LMHead) probabilistic output（vocab size classification） to text (token)\n",
    "    - iteratively，意味着更多的计算量\n",
    "    - quality & diversity\n",
    "- greedy search decoding：搜狗输入法，每次都用top1的候选\n",
    "- beam search decoding\n",
    "- sampling methods\n",
    "- top-k & nucleus sampling\n",
    "- decoding/generating 的场景\n",
    "    - 文本生成\n",
    "        - seq2seq（机器翻译等）\n",
    "        - image caption：image2text"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "635e16ac",
   "metadata": {},
   "source": [
    "- (autoregressive or causal) language models\n",
    "\n",
    "- $\\textbf{x}=x_1,x_2,\\cdots,x_k. \\textbf{y}=y_1,y_2,\\cdots,y_t.$\n",
    "    - chain rule of probability to factorize it as a product of conditional probabilities\n",
    "\n",
    "$$\n",
    "\\begin{split}\n",
    "P(\\textbf{y}|\\textbf{x})&=P(y_1,y_2,\\cdots,y_t|\\textbf{x})\\\\\n",
    "&=\\Pi_{t=1}^Np(y_t|y_{\\lt t}, \\textbf{x})\\quad (y_{\\lt t}=y_{1,2,\\cdots,t-1})\n",
    "\\end{split}\n",
    "$$\n",
    "\n",
    "$$\n",
    "\\begin{split}\n",
    "\\log P(\\textbf{y}|\\textbf{x})&=\\log P(y_1,y_2,\\cdots,y_t|\\textbf{x})\\\\\n",
    "&=\\log\\Pi_{t=1}^Np(y_t|y_{\\lt t}, \\textbf{x})\\quad (y_{\\lt t}=y_{1,2,\\cdots,t-1})\\\\\n",
    "&=\\sum_{i=1}^N\\log p(y_{t}|y_{\\lt t}, \\textbf x)\n",
    "\\end{split}\n",
    "$$\n",
    "\n",
    "\n",
    "- 单向的，从左至右的，（BERT 的 B 表示的含义就是 bidirectional）\n",
    "\n",
    "- 具体的解码过程：\n",
    "    \n",
    "$$\n",
    "\\begin{split}\n",
    "&p(y_t=w_i|y_{\\lt t}, x)=\\text{softmax}(z_{t,i})\\\\\n",
    "&\\hat{\\textbf{y}}={\\arg\\max}_{\\textbf{y}}P(\\textbf{y}|\\textbf{x})\n",
    "\\end{split}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e8b2ccdc",
   "metadata": {},
   "source": [
    "## decoding"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a445b73e",
   "metadata": {},
   "source": [
    "- greedy search decoding: 重复性较高，diversity 不足，整体未必是最优解\n",
    "- beam search decoding："
   ]
  },
  {
   "cell_type": "markdown",
   "id": "39c1fcfc",
   "metadata": {},
   "source": [
    "$$\n",
    "\\hat y_t = {\\arg\\max}_{y_t}P(y_t|y_{\\lt t}, \\textbf{x})\\quad (y_{\\lt t}=y_{1,2,\\cdots,t-1})\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "97307d1a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:33:02.575839Z",
     "start_time": "2023-05-05T16:33:02.569908Z"
    }
   },
   "outputs": [],
   "source": [
    "from transformers import AutoModelForCausalLM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "0b069500",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:33:35.879817Z",
     "start_time": "2023-05-05T16:33:17.426241Z"
    }
   },
   "outputs": [],
   "source": [
    "model_ckpt = 'gpt2-xl'\n",
    "tokenizer = AutoTokenizer.from_pretrained(model_ckpt)\n",
    "model = AutoModelForCausalLM.from_pretrained(model_ckpt).to(device)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "af8e3f29",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:33:57.915801Z",
     "start_time": "2023-05-05T16:33:57.910386Z"
    }
   },
   "outputs": [],
   "source": [
    "sample_text = 'A long long time ago, '"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "a54acffe",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:34:03.735841Z",
     "start_time": "2023-05-05T16:34:03.709249Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'input_ids': tensor([[  32,  890,  890,  640, 2084,   11,  220]]), 'attention_mask': tensor([[1, 1, 1, 1, 1, 1, 1]])}"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_inputs = tokenizer(sample_text, return_tensors='pt')\n",
    "model_inputs"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e9d03151",
   "metadata": {},
   "source": [
    "### greedy search "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "8df8e8ce",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:34:15.000615Z",
     "start_time": "2023-05-05T16:34:14.982209Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 7])\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "tensor([[  32,  890,  890,  640, 2084,   11,  220]], device='cuda:0')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "input_ids = model_inputs['input_ids'].to(device)\n",
    "print(input_ids.shape)\n",
    "input_ids"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ab7b3be8",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T14:16:22.490580Z",
     "start_time": "2023-05-05T14:16:22.394330Z"
    }
   },
   "outputs": [],
   "source": [
    "sorted_ids = torch.argsort(torch.softmax(model(input_ids).logits[0, -1, :], dim=-1), dim=-1, descending=True)\n",
    "sorted_ids[None, 0, None].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "56095aaf",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:37:30.498801Z",
     "start_time": "2023-05-05T16:37:28.404719Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "before append input_ids.shape torch.Size([1, 7])\n",
      "after append input_ids.shape torch.Size([1, 8])\n",
      "before append input_ids.shape torch.Size([1, 8])\n",
      "after append input_ids.shape torch.Size([1, 9])\n",
      "before append input_ids.shape torch.Size([1, 9])\n",
      "after append input_ids.shape torch.Size([1, 10])\n",
      "before append input_ids.shape torch.Size([1, 10])\n",
      "after append input_ids.shape torch.Size([1, 11])\n",
      "before append input_ids.shape torch.Size([1, 11])\n",
      "after append input_ids.shape torch.Size([1, 12])\n",
      "before append input_ids.shape torch.Size([1, 12])\n",
      "after append input_ids.shape torch.Size([1, 13])\n",
      "before append input_ids.shape torch.Size([1, 13])\n",
      "after append input_ids.shape torch.Size([1, 14])\n",
      "before append input_ids.shape torch.Size([1, 14])\n",
      "after append input_ids.shape torch.Size([1, 15])\n",
      "before append input_ids.shape torch.Size([1, 15])\n",
      "after append input_ids.shape torch.Size([1, 16])\n",
      "before append input_ids.shape torch.Size([1, 16])\n",
      "after append input_ids.shape torch.Size([1, 17])\n"
     ]
    }
   ],
   "source": [
    "n_steps = 10\n",
    "# top 5\n",
    "choices_per_step = 5\n",
    "\n",
    "iterations = []\n",
    "with torch.no_grad():\n",
    "    # iteratively\n",
    "    for _ in range(n_steps):\n",
    "        iteration = {}\n",
    "        iteration['input'] = tokenizer.decode(input_ids[0])\n",
    "        \n",
    "        output = model(input_ids=input_ids)\n",
    "        # output.logits.shape = (1, 7, 50257)\n",
    "        # last_token_logits.shape == [50257]\n",
    "        last_token_logits = output.logits[0, -1, :]\n",
    "        last_token_probs = torch.softmax(last_token_logits, dim=-1)\n",
    "        sorted_ids = torch.argsort(last_token_probs, dim=-1, descending=True)\n",
    "        \n",
    "        for choice_idx in range(choices_per_step):\n",
    "            token_id = sorted_ids[choice_idx]\n",
    "            token_prob = last_token_probs[token_id].cpu().numpy()\n",
    "            token_choice = f'{tokenizer.decode(token_id)}({100*token_prob:.2f}%)'\n",
    "            iteration[f'choice {choice_idx+1}'] = token_choice\n",
    "            \n",
    "        # append\n",
    "        print('before append input_ids.shape', input_ids.shape)\n",
    "        input_ids = torch.cat([input_ids, sorted_ids[None, 0, None]], dim=-1)\n",
    "        print('after append input_ids.shape', input_ids.shape)\n",
    "        \n",
    "        iterations.append(iteration)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "9ad45fb2",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:37:54.802552Z",
     "start_time": "2023-05-05T16:37:54.797232Z"
    }
   },
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "aeeec772",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:37:55.987012Z",
     "start_time": "2023-05-05T16:37:55.959891Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>input</th>\n",
       "      <th>choice 1</th>\n",
       "      <th>choice 2</th>\n",
       "      <th>choice 3</th>\n",
       "      <th>choice 4</th>\n",
       "      <th>choice 5</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>A long long time ago,</td>\n",
       "      <td>(47.70%)</td>\n",
       "      <td>『(8.94%)</td>\n",
       "      <td>_____(3.93%)</td>\n",
       "      <td>____(3.67%)</td>\n",
       "      <td>________(3.51%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>A long long time ago,</td>\n",
       "      <td>I(19.67%)</td>\n",
       "      <td>in(6.90%)</td>\n",
       "      <td>a(6.87%)</td>\n",
       "      <td>the(5.73%)</td>\n",
       "      <td>there(3.60%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>A long long time ago,  I</td>\n",
       "      <td>was(13.66%)</td>\n",
       "      <td>had(8.50%)</td>\n",
       "      <td>wrote(5.17%)</td>\n",
       "      <td>read(3.13%)</td>\n",
       "      <td>used(2.92%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>A long long time ago,  I was</td>\n",
       "      <td>a(13.13%)</td>\n",
       "      <td>in(6.68%)</td>\n",
       "      <td>on(2.30%)</td>\n",
       "      <td>at(2.20%)</td>\n",
       "      <td>asked(2.11%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>A long long time ago,  I was a</td>\n",
       "      <td>young(3.32%)</td>\n",
       "      <td>little(2.78%)</td>\n",
       "      <td>very(2.55%)</td>\n",
       "      <td>kid(2.51%)</td>\n",
       "      <td>child(2.14%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>A long long time ago,  I was a young</td>\n",
       "      <td>man(12.78%)</td>\n",
       "      <td>girl(10.55%)</td>\n",
       "      <td>boy(7.64%)</td>\n",
       "      <td>,(4.53%)</td>\n",
       "      <td>lad(4.40%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>A long long time ago,  I was a young man</td>\n",
       "      <td>,(19.50%)</td>\n",
       "      <td>.(14.43%)</td>\n",
       "      <td>who(8.64%)</td>\n",
       "      <td>and(8.21%)</td>\n",
       "      <td>with(6.17%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>A long long time ago,  I was a young man,</td>\n",
       "      <td>and(17.90%)</td>\n",
       "      <td>a(4.82%)</td>\n",
       "      <td>just(3.76%)</td>\n",
       "      <td>living(3.62%)</td>\n",
       "      <td>I(3.08%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>A long long time ago,  I was a young man, and</td>\n",
       "      <td>I(33.80%)</td>\n",
       "      <td>a(7.22%)</td>\n",
       "      <td>my(5.96%)</td>\n",
       "      <td>in(3.00%)</td>\n",
       "      <td>the(2.45%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>A long long time ago,  I was a young man, and I</td>\n",
       "      <td>was(25.14%)</td>\n",
       "      <td>had(14.60%)</td>\n",
       "      <td>wanted(2.78%)</td>\n",
       "      <td>thought(2.11%)</td>\n",
       "      <td>used(1.89%)</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                             input       choice 1  \\\n",
       "0                           A long long time ago,        (47.70%)   \n",
       "1                          A long long time ago,        I(19.67%)   \n",
       "2                         A long long time ago,  I    was(13.66%)   \n",
       "3                     A long long time ago,  I was      a(13.13%)   \n",
       "4                   A long long time ago,  I was a   young(3.32%)   \n",
       "5             A long long time ago,  I was a young    man(12.78%)   \n",
       "6         A long long time ago,  I was a young man      ,(19.50%)   \n",
       "7        A long long time ago,  I was a young man,    and(17.90%)   \n",
       "8    A long long time ago,  I was a young man, and      I(33.80%)   \n",
       "9  A long long time ago,  I was a young man, and I    was(25.14%)   \n",
       "\n",
       "         choice 2        choice 3         choice 4         choice 5  \n",
       "0        『(8.94%)    _____(3.93%)      ____(3.67%)  ________(3.51%)  \n",
       "1       in(6.90%)        a(6.87%)       the(5.73%)     there(3.60%)  \n",
       "2      had(8.50%)    wrote(5.17%)      read(3.13%)      used(2.92%)  \n",
       "3       in(6.68%)       on(2.30%)        at(2.20%)     asked(2.11%)  \n",
       "4   little(2.78%)     very(2.55%)       kid(2.51%)     child(2.14%)  \n",
       "5    girl(10.55%)      boy(7.64%)         ,(4.53%)       lad(4.40%)  \n",
       "6       .(14.43%)      who(8.64%)       and(8.21%)      with(6.17%)  \n",
       "7        a(4.82%)     just(3.76%)    living(3.62%)         I(3.08%)  \n",
       "8        a(7.22%)       my(5.96%)        in(3.00%)       the(2.45%)  \n",
       "9     had(14.60%)   wanted(2.78%)   thought(2.11%)      used(1.89%)  "
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame(iterations)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "76eb8f4d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:38:28.503464Z",
     "start_time": "2023-05-05T16:38:28.491733Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'input': 'A long long time ago, \\xa0I was a young man, and I',\n",
       " 'choice 1': ' was(25.14%)',\n",
       " 'choice 2': ' had(14.60%)',\n",
       " 'choice 3': ' wanted(2.78%)',\n",
       " 'choice 4': ' thought(2.11%)',\n",
       " 'choice 5': ' used(1.89%)'}"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iterations[-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "6d5aae5b",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:38:40.922170Z",
     "start_time": "2023-05-05T16:38:40.906668Z"
    }
   },
   "outputs": [],
   "source": [
    "def greedy_search(model, input_ids, max_steps=10, max_choices=5):\n",
    "    iterations = []\n",
    "    input_ids_clone = input_ids.clone()\n",
    "    with torch.no_grad():\n",
    "        for _ in range(max_steps):\n",
    "            iteration = {}\n",
    "            iteration['input'] = tokenizer.decode(input_ids_clone[0])\n",
    "\n",
    "            output = model(input_ids=input_ids_clone)\n",
    "            # output.logits.shape = (1, 7, 50257)\n",
    "            # last_token_logits.shape == [50257]\n",
    "            last_token_logits = output.logits[0, -1, :]\n",
    "            last_token_probs = torch.softmax(last_token_logits, dim=-1)\n",
    "            sorted_ids = torch.argsort(last_token_probs, dim=-1, descending=True)\n",
    "\n",
    "            for choice_idx in range(max_choices):\n",
    "                token_id = sorted_ids[choice_idx]\n",
    "                token_prob = last_token_probs[token_id].cpu().numpy()\n",
    "                token_choice = f'{tokenizer.decode(token_id)}({100*token_prob:.2f}%)'\n",
    "                iteration[f'choice {choice_idx+1}'] = token_choice\n",
    "\n",
    "            # append\n",
    "#             print('before append input_ids_clone.shape', input_ids_clone.shape)\n",
    "            input_ids_clone = torch.cat([input_ids_clone, sorted_ids[None, 0, None]], dim=-1)\n",
    "#             print('after append input_ids_clone.shape', input_ids_clone.shape)\n",
    "\n",
    "            iterations.append(iteration)\n",
    "        return iterations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "99358b8b",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:39:21.398130Z",
     "start_time": "2023-05-05T16:39:20.960743Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 7])\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>input</th>\n",
       "      <th>choice 1</th>\n",
       "      <th>choice 2</th>\n",
       "      <th>choice 3</th>\n",
       "      <th>choice 4</th>\n",
       "      <th>choice 5</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>A long long time ago,</td>\n",
       "      <td>(47.70%)</td>\n",
       "      <td>『(8.94%)</td>\n",
       "      <td>_____(3.93%)</td>\n",
       "      <td>____(3.67%)</td>\n",
       "      <td>________(3.51%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>A long long time ago,</td>\n",
       "      <td>I(19.67%)</td>\n",
       "      <td>in(6.90%)</td>\n",
       "      <td>a(6.87%)</td>\n",
       "      <td>the(5.73%)</td>\n",
       "      <td>there(3.60%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>A long long time ago,  I</td>\n",
       "      <td>was(13.66%)</td>\n",
       "      <td>had(8.50%)</td>\n",
       "      <td>wrote(5.17%)</td>\n",
       "      <td>read(3.13%)</td>\n",
       "      <td>used(2.92%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>A long long time ago,  I was</td>\n",
       "      <td>a(13.13%)</td>\n",
       "      <td>in(6.68%)</td>\n",
       "      <td>on(2.30%)</td>\n",
       "      <td>at(2.20%)</td>\n",
       "      <td>asked(2.11%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>A long long time ago,  I was a</td>\n",
       "      <td>young(3.32%)</td>\n",
       "      <td>little(2.78%)</td>\n",
       "      <td>very(2.55%)</td>\n",
       "      <td>kid(2.51%)</td>\n",
       "      <td>child(2.14%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>A long long time ago,  I was a young</td>\n",
       "      <td>man(12.78%)</td>\n",
       "      <td>girl(10.55%)</td>\n",
       "      <td>boy(7.64%)</td>\n",
       "      <td>,(4.53%)</td>\n",
       "      <td>lad(4.40%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>A long long time ago,  I was a young man</td>\n",
       "      <td>,(19.50%)</td>\n",
       "      <td>.(14.43%)</td>\n",
       "      <td>who(8.64%)</td>\n",
       "      <td>and(8.21%)</td>\n",
       "      <td>with(6.17%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>A long long time ago,  I was a young man,</td>\n",
       "      <td>and(17.90%)</td>\n",
       "      <td>a(4.82%)</td>\n",
       "      <td>just(3.76%)</td>\n",
       "      <td>living(3.62%)</td>\n",
       "      <td>I(3.08%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>A long long time ago,  I was a young man, and</td>\n",
       "      <td>I(33.80%)</td>\n",
       "      <td>a(7.22%)</td>\n",
       "      <td>my(5.96%)</td>\n",
       "      <td>in(3.00%)</td>\n",
       "      <td>the(2.45%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>A long long time ago,  I was a young man, and I</td>\n",
       "      <td>was(25.14%)</td>\n",
       "      <td>had(14.60%)</td>\n",
       "      <td>wanted(2.78%)</td>\n",
       "      <td>thought(2.11%)</td>\n",
       "      <td>used(1.89%)</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                             input       choice 1  \\\n",
       "0                           A long long time ago,        (47.70%)   \n",
       "1                          A long long time ago,        I(19.67%)   \n",
       "2                         A long long time ago,  I    was(13.66%)   \n",
       "3                     A long long time ago,  I was      a(13.13%)   \n",
       "4                   A long long time ago,  I was a   young(3.32%)   \n",
       "5             A long long time ago,  I was a young    man(12.78%)   \n",
       "6         A long long time ago,  I was a young man      ,(19.50%)   \n",
       "7        A long long time ago,  I was a young man,    and(17.90%)   \n",
       "8    A long long time ago,  I was a young man, and      I(33.80%)   \n",
       "9  A long long time ago,  I was a young man, and I    was(25.14%)   \n",
       "\n",
       "         choice 2        choice 3         choice 4         choice 5  \n",
       "0        『(8.94%)    _____(3.93%)      ____(3.67%)  ________(3.51%)  \n",
       "1       in(6.90%)        a(6.87%)       the(5.73%)     there(3.60%)  \n",
       "2      had(8.50%)    wrote(5.17%)      read(3.13%)      used(2.92%)  \n",
       "3       in(6.68%)       on(2.30%)        at(2.20%)     asked(2.11%)  \n",
       "4   little(2.78%)     very(2.55%)       kid(2.51%)     child(2.14%)  \n",
       "5    girl(10.55%)      boy(7.64%)         ,(4.53%)       lad(4.40%)  \n",
       "6       .(14.43%)      who(8.64%)       and(8.21%)      with(6.17%)  \n",
       "7        a(4.82%)     just(3.76%)    living(3.62%)         I(3.08%)  \n",
       "8        a(7.22%)       my(5.96%)        in(3.00%)       the(2.45%)  \n",
       "9     had(14.60%)   wanted(2.78%)   thought(2.11%)      used(1.89%)  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "input_ids = model_inputs['input_ids'].to(device)\n",
    "print(input_ids.shape)\n",
    "input_ids\n",
    "pd.DataFrame(greedy_search(model, input_ids, ))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "43d029ad",
   "metadata": {},
   "source": [
    "#### model.generate()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a9bb6c4d",
   "metadata": {},
   "source": [
    "- `model.generate()`\n",
    "    - 默认 greedy search，`num_beams` 不设置的话\n",
    "    - `do_sample=False`\n",
    "    - `max_length`: prompt + generation 的总长度\n",
    "    - `max_new_tokens`: generation 的长度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "7ec1dae7",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:40:54.804427Z",
     "start_time": "2023-05-05T16:40:54.324945Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 17])\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'A long long time ago, \\xa0I was a young man, and I was'"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "input_ids = tokenizer(sample_text, return_tensors='pt').input_ids.to(device)\n",
    "output = model.generate(input_ids, max_new_tokens=10, do_sample=False)\n",
    "print(output.shape)\n",
    "tokenizer.decode(output[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "8585350a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:41:31.832080Z",
     "start_time": "2023-05-05T16:41:31.785418Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[  818,   257, 14702,  4917,    11, 11444,  5071,   257, 27638,   286,\n",
       "         28000, 19942,  2877,   287,   257,  6569,    11,  4271, 31286,  1850,\n",
       "         19272,    11,   287,   262,   843,   274, 21124,    13,  3412,   517,\n",
       "          6452,   284,   262,  4837,   373,   262,  1109,   326,   262, 28000,\n",
       "         19942,  5158,  2818,  3594,    13]], device='cuda:0')"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# https://openai.com/research/better-language-models\n",
    "prompt = 'In a shocking finding, scientist discovered a herd of unicorns living in a remote, previously unexplored valley, in the Andes Mountains. Even more surprising to the researchers was the fact that the unicorns spoke perfect English.'\n",
    "input_ids = tokenizer(prompt, return_tensors='pt').input_ids.to(device)\n",
    "input_ids"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "2f17944f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:42:16.943621Z",
     "start_time": "2023-05-05T16:42:13.653856Z"
    }
   },
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "'list' object has no attribute 'shape'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[19], line 3\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[38;5;66;03m# greedy_search\u001b[39;00m\n\u001b[1;32m      2\u001b[0m gen_1 \u001b[38;5;241m=\u001b[39m greedy_search(model, input_ids, \u001b[38;5;241m128\u001b[39m\u001b[38;5;241m-\u001b[39minput_ids[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39msize(\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m), )\n\u001b[0;32m----> 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[43mgen_1\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mshape\u001b[49m)\n",
      "\u001b[0;31mAttributeError\u001b[0m: 'list' object has no attribute 'shape'"
     ]
    }
   ],
   "source": [
    "# greedy_search\n",
    "gen_1 = greedy_search(model, input_ids, 128-input_ids[0].size(-1), )\n",
    "# pd.DataFrame(gen_1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "de17dd7f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:42:59.701594Z",
     "start_time": "2023-05-05T16:42:59.694419Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "In a shocking finding, scientist discovered a herd of unicorns living in a remote, previously unexplored valley, in the Andes Mountains. Even more surprising to the researchers was the fact that the unicorns spoke perfect English.\n",
      "\n",
      "The researchers, from the University of California, Davis, and the University of Colorado, Boulder, were conducting a study on the Andean cloud forest, which is home to the rare species of cloud forest trees.\n",
      "\n",
      "The researchers were conducting a study on the Andean cloud forest, which is home to the rare species of cloud forest trees.\n",
      "\n",
      "The researchers were conducting a study on the And\n",
      "127\n"
     ]
    }
   ],
   "source": [
    "print(gen_1[-1]['input'])\n",
    "print(len(tokenizer(gen_1[-1]['input']).input_ids))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "b5343805",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:43:36.613263Z",
     "start_time": "2023-05-05T16:43:33.124128Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 128])\n",
      "In a shocking finding, scientist discovered a herd of unicorns living in a remote, previously unexplored valley, in the Andes Mountains. Even more surprising to the researchers was the fact that the unicorns spoke perfect English.\n",
      "\n",
      "The researchers, from the University of California, Davis, and the University of Colorado, Boulder, were conducting a study on the Andean cloud forest, which is home to the rare species of cloud forest trees.\n",
      "\n",
      "The researchers were conducting a study on the Andean cloud forest, which is home to the rare species of cloud forest trees.\n",
      "\n",
      "The researchers were conducting a study on the Andean\n"
     ]
    }
   ],
   "source": [
    "output_greedy = model.generate(input_ids, max_length=128, do_sample=False)\n",
    "# gen2 = model.generate(input_ids, max_new_tokens=128-input_ids[0].size(-1), do_sample=False)\n",
    "print(output_greedy.shape)\n",
    "print(tokenizer.decode(output_greedy[0]))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6fdcd1ed",
   "metadata": {},
   "source": [
    "#### math（追求的是精确，而不是多样性）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "d1c9773b",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:44:37.251010Z",
     "start_time": "2023-05-05T16:44:37.122592Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'5 + 8 => 13 \\n 7 + 2 => 9 \\n 1 + 5 => 8 '"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "math_ids = tokenizer('5 + 8 => 13 \\n 7 + 2 => 9 \\n 1 + 5 =>', return_tensors='pt').input_ids.to(device)\n",
    "tokenizer.decode(model.generate(math_ids, max_new_tokens=2, do_sample=False)[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4ca205a0",
   "metadata": {},
   "source": [
    "### beam search decoding"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "61a6fe4f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:45:09.329731Z",
     "start_time": "2023-05-05T16:45:09.313563Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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3333qbS01OzyAAAAMELQXh0AAAApIx6P67e//a0effRRHThwQEVFRfrc5z6nz3/+84SmAAAA+EARnAIAACBl/OY3v9HXv/51HTp0SAUFBbrvvvsITQEAAPChIDgFAABASli1apW+8Y1v6NChQ8rOztYXvvAFff7zn1dxcbHZpQEAAGAEIkAcAHsAACAASURBVDgFAABA0nvmmWf0+OOPq7a2Vm63W1/+8pd13333qbCw0OzSAAAAMEIRnAIAACCpPfPMM/q3f/s31dbWymq16qtf/ar+9m//Vnl5eWaXBgAAgBGM4BQAAABJ69lnn020NI3FYvr617+uL33pS/J6vWaXBgAAgBHOYhiGYXYRAAAAwKmee+45ffOb39TBgwcVj8d1880366mnnlJ2drbZpQEAAOASYDW7AAAAAOCd4vG4nnvuOT3yyCM6cOCALBaLPv7xj+vJJ58kNAUAAMBFQ3AKAACApBGNRlVdXa2f/vSnqq2tVVpamm6//Xb94Ac/UEFBgdnlAQAA4BLCGKcAAABICuFwWJs3b9Y3v/lNvfHGG/J4PFqxYoUeffRRlZSUmF0eAAAALjEEpwAAADDdydD0scce0+uvv67MzEytWLFC//zP/6zy8nKzywMAAMAliOAUAAAApjoZmj7++ONavXq1vF6vVq5cqYceekiTJ082uzwAAABcoghOAQAAYJpoNJpoabp69WplZWVpxYoVeuCBBzR16lSzywMAAMAljOAUAAAApojH44kxTV9//XV5vV6tWLFC999/v2bMmGF2eQAAALjEEZwCAADAFFu2bNG//Mu/6I033kiMafrAAw8QmgIAACApEJwCAADgotu6dasefvhhvfXWW/J4PFqxYoUefvhhuucDAAAgaRCcAgAA4KLasmWLHnroIVVVVcnpdGrFihX6l3/5F1VUVJhdGgAAAJBAcAoAAICLZvPmzXr44Ye1fv16Wa1WrVy5Uo8++qjKy8vNLg0AAAAYxmIYhmF2EQAAABj5Nm/erIceekjV1dWKRCK69dZb9f3vf18lJSVmlwYAAACchuAUAAAAH7qtW7fqwQcf1Pr16xWNRnXzzTfrySefVEFBgdmlAQAAAGdkNbsAAAAAjFyGYWjLli168MEHVVVVpXg8rpUrVxKaAgAAIOkRnAIAAOBDEY1GVV1drYceekhvvvmm7Ha7br/9dv3n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ZfzKcJtcU5rOLTOyKPBO6nshIuOWbdsMDQ3R09Oj0FTGjWg0Qnd3F4FAINmliIiIiIhcEpM6OG3sD/OHxsFklyFywTLcBmtK07ltZjbFGe5klyMiFygSiTAw0EcspuFiZHwJh8P09vYQj8eTXYqIiIiIyEU3qYPTV5uHCEQn9RCvMo55nQYri7zcMSObkkxXsssRkfdgeNhHKBRikg87LuOUzzdEKBRKdhkiIiIiIhfdpA5Otx/3J7sEkQuW6XawcGoaxQpNRca9UCik1qYybsXjcfz+4WSXISIiIiJy0U3q4HQgpG5lMn6F4zbBiP6GRca7aDRKNBpVa1MZ16LRSLJLEBERERG56CZ1cCoynsXiNoGYghaR8S4ej2Pbugki41soFE52CSIiIiIiF52CUxERERF5TzQ5lIiIiIhMRApORURERERERERERE6h4FRERERERERERETkFApORURERERERERERE6h4FRERERERERERETkFApORURERERERERERE7hTHYBMr5EhwcIdLcR7GkHbBwpaaTmFZNaUIrD6U52eSIiMk709w+we/cuANLSvFRVVZGfPyXJVYmIiIiIiLxNwelZDLfVM9R0kGg4dF7rpZdUkT19Dg5P6iWqLDn8XS20b36OzprX6Tu0C2wbT3Y+BUuuY879D+LILUx2iSIiMk40NDTwpS/9HQAVFRU8+OAXuf769yW5KhERERERkbcpOD2LngPbOfLsDwj0dZ7XetNv/DjpBaUTKjiN+Ado+uMvaP7Tk0QDw4nfh/q7GKzfSyzoT2J1IiIiIiIiIiIiF5eCU3lX/K31dO1+PRGa5s9ZTt7C1TicblyZubgzc5NcoYiIiIiIiIiIyMWj4PQssqbNYfpNHycaeLs1ZdyK0vDC44nHGcWVFC6/YdR6uTMWTqjWpgC+9qNEA4OJx1X3PED+/NWYDlcSqxIREREREREREbk0FJyeRWbFXNJLKrFtO/E7KxwYFZymF1cw487PjlrPdLlxuidWcBoN+onHrMTj3KqFCk1FRERERERERGTCUnB6Fg53Cg53yqjfxVyjw0KH04U7I+dylnVFMB360xERERERERERkYlL6dcl9OZ3HsR//CiG6WD2/Q+SN2c5HW+9SueOV4iF/Ey/+eMULFiDr72R/kO78bU3MlC/DyscACCjbDZ581eSN2c56YXTRm27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EREREXkHBaciIiIiIiIiIiIi76DgVEREREREREREROQdFJyKiIiIiIiIiIiIvIOCUxEREREREREREZF3UHAqskC5HAYeZ6arEJF3y+FwYBhGpssQeVeysryZLkFEREREZM4pOBVZoLJdDkp87kyXISLvktvtxul0ZboMkXdF/4dFRERE5EJ0UQenm6uyM12CyFkLp0z6QwlMy850KSLyLnk8HhwOdSGXhSsvLz/TJYiIiIiIzLmLOji9vDYPl0PDI2VhCiYsnjo8ybPdIRKmwlORhSwvL19DnWXBysrKIjtbN6NFRERE5MJzUQenm2tyWFOWhWEodJKFaThi8nDbBNuPhIilrUyXIyJnKSsri2g0RjKZzHQpImfE4XBSXl6Bw3FRf6UUERERkQvURf0tN8tp8JFVxawoysKp8FQWqIFIip+3TfBib5hoSuGpyEJjWRYHDhzgn/7pm2zb9jzRaDTTJYmcFqfTSXFxMXl5+VrgTEREREQuSBf1TP6GYbCk2MtvX1LCQwcCtAcShJIKnmTh6Q+n+EXbBA7g8tpcfO6L+p6IyIJhmiatra389V//NY899hgVFRU0NjayZMliTNPMdHkiszIMA4/HQ0FBIaWlZTidmp9XRERERC5MF3VwCuA0DBpLsvjttaW82h+hfTyOP5IimrLQmjtnLzg2TGwygMuTRWF5NS63J9MlLVhelwOf28GRyQSJk+QofeEUD7dPAHBFXS7ZLoWnIvOZaZrs3buX+++/n8cff5xUKsXKlSupq6unrKyCeDxKIpEglUpnulQRABwOA5fLhdfrJS8vn7y8fIWmIiIiInJBM2zbVjx4VNqyGYmk6QslCSctLL00Z+3H3/0Ozz31OHV1DfzuH/1PKqtrMl3SgpXtdpDndvD6YJQnDk2SOkWiX5vr5v2Nhby3Lpcshaci89JboekDDzzAI488QiKR4JZbbuHLX/4yGzZswOVykU6nicVipFKa91TmB4fDgdvtxuvNwuW66O+9i4iIiMhFQN9638blMKjKc1OV5850KQvez8cO0bXjaXzhNWwohpWL8zNd0oLXUOgBA57oOnl42hdO8fODAbDh2kV5uByad05kPrEsi5aWFu6//34effRREokEt912G1/4whdYv379dCDlcrnIy8vLcLUiIiIiIiIXL3VHE1kg8r0uPrCikF9blo/7FGFofyTN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8fMLSwP4nef/eDYSzY083TIQIaLwVERE5JpTcCoiIiIiIlJAAbeNh1r9fHJZKV67cd5tx6JpXjyam7Y/m1R4KiIici0pOBURERERESkwv8vGx1qL+UxHKQ7z/OHpeDTNPx0JsaU/QjSlnqciIiLXioJTERERERGRBcDntPHx1hKeWVV6wW0n4xm+3x1kS3+EeEbhqYiIyLWg4FRERERERGSBKHKYPLI0wOdXlV9w25lklu/sn2JL3yzprHUdqhMREbm5KDgVERERERFZQJx2g19o9/O5FQFsxvmn7cfSFn+zd5KXe8JkLYWnIiIiV5OCUxERERERkQXGbTd5pL2E+xq9F+x5mrEs/nrvFK/2zJDIKDwVERG5WhScioiIiIiILEB+l51fWl3O5kYvHvv5w1OA/905xeu9M6QUnoqIiFwVCk5FREREREQWqIoiO091lHF3vY8ix/nD03jG4rvd0+wcniOlBaNERESumIJTERERERGRBazG5+DJ5aXcXe/Dd4HwdCaZ4f8cnGLPaJSEwlMREZErouBURERERERkgavzO3h8WYC7LhCeWpbBidkU3z0wzZ6RKPG0wlMREZHLpeBURERERERkEWj0O3m8/eLC04FImh90B9k1qvBURETkcik4FRERERERWSQaSpw8dhEjTzOWRc9MghcOhditkaciIiKXRcGpiIiIiIjIItLod/LEslLurPfhsZ9/5GlPOM6PDgfZo5GnIiIil0zBqYiIiIiIyCJT73fw5IpS7q734rKde7uMZdATTvCD7iDvj0ZJZKzrV6SIiMgip+BURERERERkEar1OXh6ZTl31/twGOcfedo7k+B7B6fZOxYlpfBURETkoig4FRERERERWaSqvHY+v6aCuxu9593Osgz6I0m+0zlJ11iUdFbhqYiIyIUoOBUREREREVnESj02vrC+grvqis67nWUZDM+m+freSQ5ORslYCk9FRETOR8GpiIiIiIjIIud12vh3t1ZxT4MXwzh3IJoFxqJp/uy9cbonY2i5KBERkXNTcCoiIiIiInID8Dlt/OtbKrmvsRiHee6epwChZJb/tm2Ug2NRshp5KiIiclYKTkVERERERG4QxU4bn19TweZGH27b+cPTWMri/9sxRudETD1PRUREzkLBqYiIiIiIyA2k3GPj6ZVl3NPow2s/f3gaTGT5q10T7B2Lkcoo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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 24,
     "metadata": {
      "image/png": {
       "width": 600
      }
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Image('../imgs/beam-search-2.png', width=600)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d9356d74",
   "metadata": {},
   "source": [
    "- `model.generate()`\n",
    "    - 默认 greedy search，`num_beams` 不设置的话\n",
    "    - `do_sample=False`\n",
    "    - `max_length`: prompt + generation 的总长度\n",
    "    - `max_new_tokens`: generation 的长度\n",
    "    - 对于 beam search\n",
    "        - `num_beams=5`\n",
    "    - 控制重复性：`no_repeat_ngram_size=2`\n",
    "        - tracks which n-grams have been seen\n",
    "and sets the next token probability to zero if it would produce a previously seen\n",
    "n-gram:"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c1935f18",
   "metadata": {},
   "source": [
    "$$\n",
    "\\begin{split}\n",
    "\\log P(\\textbf{y}|\\textbf{x})&=\\log P(y_1,y_2,\\cdots,y_t|\\textbf{x})\\\\\n",
    "&=\\log\\Pi_{t=1}^Np(y_t|y_{\\lt t}, \\textbf{x})\\quad (y_{\\lt t}=y_{1,2,\\cdots,t-1})\\\\\n",
    "&=\\sum_{i=1}^N\\log p(y_{t}|y_{\\lt t}, \\textbf x)\n",
    "\\end{split}\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "666b623c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:47:50.926016Z",
     "start_time": "2023-05-05T16:47:50.916603Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.562684646268003e-309"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "0.5**1024"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "0649d37b",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:48:14.869341Z",
     "start_time": "2023-05-05T16:48:14.849752Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor(-709.7827)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "1024*torch.log(torch.tensor(0.5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "20f47bbb",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:48:26.459764Z",
     "start_time": "2023-05-05T16:48:26.448018Z"
    }
   },
   "outputs": [],
   "source": [
    "def log_probs_from_logits(logits, labels):\n",
    "    # (b, s, h), h == 50257\n",
    "    logp = F.log_softmax(logits, dim=-1)\n",
    "    logp_label = torch.gather(logp, 2, labels.unsqueeze(2)).squeeze(-1)\n",
    "    return logp_label\n",
    "def sequence_logprob(model, labels, prompt_len=0):\n",
    "    with torch.no_grad():\n",
    "        output = model(labels)\n",
    "        log_probs = log_probs_from_logits(output.logits[:, :-1, :], labels[:, 1:])\n",
    "        seq_log_prob = torch.sum(log_probs[:, prompt_len:])\n",
    "    return seq_log_prob.cpu().numpy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "c1e6dd1c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:52:04.734131Z",
     "start_time": "2023-05-05T16:52:04.727068Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "45\n",
      "torch.Size([1, 128])\n"
     ]
    }
   ],
   "source": [
    "print(len(input_ids[0]))\n",
    "print(output_greedy.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "dfd4a6ac",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:52:17.242744Z",
     "start_time": "2023-05-05T16:52:17.140662Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "In a shocking finding, scientist discovered a herd of unicorns living in a remote, previously unexplored valley, in the Andes Mountains. Even more surprising to the researchers was the fact that the unicorns spoke perfect English.\n",
      "\n",
      "The researchers, from the University of California, Davis, and the University of Colorado, Boulder, were conducting a study on the Andean cloud forest, which is home to the rare species of cloud forest trees.\n",
      "\n",
      "The researchers were conducting a study on the Andean cloud forest, which is home to the rare species of cloud forest trees.\n",
      "\n",
      "The researchers were conducting a study on the Andean\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array(-68.73988, dtype=float32)"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "logp = sequence_logprob(model, output_greedy, prompt_len=len(input_ids[0]))\n",
    "print(tokenizer.decode(output_greedy[0]))\n",
    "logp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "ef28d993",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:52:48.773952Z",
     "start_time": "2023-05-05T16:52:44.904822Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "In a shocking finding, scientist discovered a herd of unicorns living in a remote, previously unexplored valley, in the Andes Mountains. Even more surprising to the researchers was the fact that the unicorns spoke perfect English.\n",
      "\n",
      "The discovery of the unicorns was made by a team of scientists from the University of California, Santa Cruz, and the National Geographic Society.\n",
      "\n",
      "According to the researchers, the unicorns were found in a remote valley in the Andes Mountains. The valley is known as the \"Valley of the Unicorns\" because of the number of unicorns that have been found there.\n",
      "\n",
      "The valley\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array(-72.29845, dtype=float32)"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "output_beam = model.generate(input_ids, max_length=128, num_beams=5, do_sample=False)\n",
    "logp = sequence_logprob(model, output_beam, prompt_len=len(input_ids[0]))\n",
    "print(tokenizer.decode(output_beam[0]))\n",
    "logp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "d43668b9",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-05-05T16:53:44.932089Z",
     "start_time": "2023-05-05T16:53:41.436042Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "In a shocking finding, scientist discovered a herd of unicorns living in a remote, previously unexplored valley, in the Andes Mountains. Even more surprising to the researchers was the fact that the unicorns spoke perfect English.\n",
      "\n",
      "The discovery was made by a team of scientists from the University of California, Santa Cruz, and the National Geographic Society. The team, led by Dr. David Hone, discovered the unicorn herd while conducting a study on the ecology and evolution of mountain goats. According to a press release, the team found the herd in an area that had never been explored before. They were able to track the animals using\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array(-106.28981, dtype=float32)"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "output_beam = model.generate(input_ids, max_length=128, num_beams=5, do_sample=False, no_repeat_ngram_size=2)\n",
    "logp = sequence_logprob(model, output_beam, prompt_len=len(input_ids[0]))\n",
    "print(tokenizer.decode(output_beam[0]))\n",
    "logp"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "336px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
